package com.spsa.vista.controladores.dialogos;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import org.primefaces.context.RequestContext;

import com.spsa.excepciones.ServicioException;
import com.spsa.negocio.gestores.GestorPerfiles;
import com.spsa.persistencia.entidades.Perfil;
import com.spsa.persistencia.entidades.Usuario;
import com.spsa.vista.utilidades.MensajesJSF;

@ManagedBean(name = "backGestorUsuarios")
public class ControladorGestorUsuarios {
	private Usuario usuario;
	private String nombrePerfil;
	@EJB
	private GestorPerfiles gestorPerfiles;
	private boolean esNuevoUsuario;
	
	@PostConstruct
	public void inicializar() {
		Object parametro = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario");

		if (parametro != null) {
			usuario = (Usuario) parametro;
			esNuevoUsuario = false;
		} else {
			usuario = new Usuario();
			esNuevoUsuario = true;
		}
	}

	public void guardar() {
		try {
			Perfil perfil = gestorPerfiles.buscar(nombrePerfil);
			
			if(perfil != null) {
				usuario.setPerfil(perfil);
				RequestContext.getCurrentInstance().closeDialog(usuario);
			}
			else
				MensajesJSF.mostrarMensaje("Guardar usuario", "El perfil ingresado no existe");
		}
		catch(ServicioException e) {
			MensajesJSF.mostrarMensaje("Guardar usuario", e.getMessage());
		}
	}

	public void cancelar() {
		RequestContext.getCurrentInstance().closeDialog(null);
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public String getNombrePerfil() {
		return nombrePerfil;
	}

	public void setNombrePerfil(String nombrePerfil) {
		this.nombrePerfil = nombrePerfil;
	}

	public boolean isEsNuevoUsuario() {
		return esNuevoUsuario;
	}

	public void setEsNuevoUsuario(boolean esNuevoUsuario) {
		this.esNuevoUsuario = esNuevoUsuario;
	}
}
